package com.linsen.erp.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.linsen.erp.admin.entity.MenuEntity;
import com.linsen.erp.admin.provider.dto.MenuDTO;
import com.linsen.erp.admin.provider.vo.MenuVO;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 菜单 服务类
 * </p>
 *
 * @author zhaoyong
 * @since 2023-07-24
 */
public interface IMenuService extends IService<MenuEntity> {
    /**
     * 根据userid获取菜单code权限列表
     * @param userid
     * @param isAdmin 是否是管理员
     * @return
     */
    Set<String> getPermissionByUserid(String userid, Integer isAdmin);

    /** 当前登录用户的权限标识列表 */
    Set<String> getUserPermissions();

    /** 当前登录用户的菜单导航 */
    List<MenuVO> getUserMenuNavList();

    /** 全部菜单列表 */
    List<MenuVO> getMenuList();

    /** 新增菜单 */
    void saveMenu(MenuDTO menuDTO);

    /** 修改菜单 */
    void updateMenu(MenuDTO menuDTO);

    /** 删除菜单（单删） */
    void delete(String id);

    /** 删除菜单（级联删除） */
    void fetchDelete(String id);

    /** 复制菜单 */
    void copy(String id);

    /** 复制菜单（级联复制） */
    void fetchCopy(String id);
}
